package com.geek.game.manager.agent.service;

import java.util.List;
import java.util.Map;

import com.geek.game.manager.agent.base.mvc.WorkException;
import com.geek.game.manager.agent.model.AgentSaleRecord;
import com.geek.game.manager.agent.model.Club;
import com.geek.game.manager.agent.model.ClubPlayerMapping;
import com.geek.game.manager.agent.model.CoinRecordModel;
import com.geek.game.manager.agent.model.ConsumerRecord;
import com.geek.game.manager.agent.model.DayReport;
import com.geek.game.manager.agent.model.Manager;
import com.geek.game.manager.agent.model.Player;

public interface ClubService {


    /**
	 * 插入俱乐部
	 * @param club
	 * @return
	 */
    public Integer insertClub(Club club);
    /**
     * 根据id查询俱乐部信息
     * @param clubId
     * @return
     */
    public Club selectClubById(String clubId);
    /**
     * 根据玩家id查询俱乐部
     * @param playerId
     * @return
     */
    public Club selectClubByPlayerId(String playerId);
    /**
     * 根据id更新俱乐部信息(不包括disabled字段)
     * @param club
     * @return
     */
    public Integer updateClubInfo(Club club);
    
    /**
     * 新增俱乐部关系绑定
     * @param mapping
     * @return
     */
    public Integer insertClubMapping(ClubPlayerMapping mapping,Club club);
    /**
     * 根据玩家id查询已绑定信息
     * @param playerId
     * @return
     */
    public ClubPlayerMapping selectByPlayerId(String playerId);
    
    /**
     * 根据管理员账号查询
     * @return
     */
    public List<Club> selectClubListByManagerId(String managerId);
    
    public List<ClubPlayerMapping> selectMembers(String clubId,String searchKey,Map<String,Object> map);
    
    /**
     * 代理销售钻石
     * @param playerId	玩家id
     * @param managerId	代理id
     * @param diamond	销售钻石
     * @return
     * @throws WorkException 
     */
    public int agentSendOut(Integer playerId,Manager manager,Integer diamond,String clubId) throws WorkException;
    /**
     * 修改备注
     * @param mappingId
     * @param comment
     * @return
     */
    public int changeRemarks(Integer mappingId,String comment);
    /**
     * 踢出俱乐部
     * @param clubId
     * @param playerId
     * @return
     */
    public int kickOutClub(Integer clubId,Integer playerId);
    /**
     * 修改默认额度
     * @param clubId	俱乐部Id
     * @param diamond	默认额度
     * @return
     * @throws WorkException 
     */
    public int editDefDiamond(Integer clubId,Integer diamond) throws WorkException;
    /**
     * 关闭或开启权限
     * @param mappingId
     * @param type 0：关闭，1：开启
     * @return
     */
    public int closeOrOpenPermit(String mappingId,Integer type);
    /**
     * 清空欠费
     * @param mappingId
     * @return
     */
    public int clearArrearage(String mappingId);
    
    /**
     * 修改密码
     * @param newPassword
     * @param managerId
     * @return
     */
    public int changePassword(String newPassword,String managerId);
    /**
     * 查询绑定玩家的消费记录
     * @param clubId
     * @param searchKey
     * @return
     */
    public List<ConsumerRecord> getRecordList(String clubId,String searchKey,Map map);
    
    /**
     * 查询绑定玩家的消费记录
     * @return
     */
    public List<DayReport> getReports(Map map);
    /**
     * 查询销售记录
     * @param map
     * @return
     */
    public List<AgentSaleRecord> getSaleRecord(Map map);
    /**
     * 查询购买钻石记录
     * @param map
     * @return
     */
    public List<CoinRecordModel> getBuyRecord(Map map);
    /**
     * 查询玩家
     * @param map
     * @return
     */
    public Player searchPlayer(Map map);
    /**
     * 验证账号是否可用
     * @param map
     * @return
     */
    public int checkPhone(Map map);
    /**
     * 创建二级代理
     * @param map
     * @return
     * @throws Exception 
     */
    public int insertSubAgent(Map map) throws Exception;
    /**
     * 查询二级代理列表
     * @return
     */
    public List<Manager> subManager(Map param);
    /**
     * 销售钻石给二级代理
     * @param subAgentId
     * @param diamond
     * @param managerId
     * @return
     * @throws WorkException 
     */
    public int saleToSubAgent(String subAgentId,Integer diamond,String managerId) throws WorkException;
}
